package com.wing.user.feign;

import com.wing.common.utils.JsonResult;
import com.wing.common.utils.PageResult;
import com.wing.user.model.request.*;
import com.wing.user.model.response.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * @author
 */
@Component
@Service
public class UserClientFallback implements UserClient {

    @Autowired
    private UserClient userClient;

    @Override
    public JsonResult<UserVO> findUserByName(String name) {
        return null;
    }

    @Override
    public JsonResult<UserAuthVO> findUserByUsername(String username) {
        return null;
    }

    @Override
    public JsonResult<UserAuthVO> findUserByPhone(Long phone) {
        return null;
    }

    @Override
    public JsonResult<UserAuthVO> findUserByOpenId(String openId) {
        return null;
    }

    @Override
    public JsonResult<ClientVO> findClientByClientId(String clientId) {
        return null;
    }

    @Override
    public JsonResult<Collection<AuthorityVO>> authorityList(String authorityIds) {
        return null;
    }

    @Override
    public JsonResult<List<RoleAuthorityVO>> authorityRoleList() {
        return null;
    }

    @Override
    public JsonResult updateStatus(Long userId, Integer status) {
        return null;
    }

    @Override
    public JsonResult<UserVO> getUserInfo(Long phone) {
        return null;
    }

    @Override
    public JsonResult<List<UserVO>> getAll() {
        return null;
    }

    @Override
    public JsonResult<PageResult<DepartmentVO>> getDepartment() {
        return null;
    }

    @Override
    public JsonResult<CompanyInfoVO> getCompanyInfo(Long id) {
        return null;
    }

    @Override
    public JsonResult<List<CompanyInfoVO>> getCompanyInfoList() {
        return null;
    }


    @Override
    public JsonResult<List<RoleDataVo>> getRoleData(List<Long> ids) {
        return null;
    }

    @Override
    public List<Role> getRoleDepartment() {
        return null;
    }

    @Override
    public JsonResult<MenuVO> getMenuById(Long id) {
        return null;
    }

    @Override
    public JsonResult<UserVO> getUserInfoByUserId(Long userId) {
        return userClient.getUserInfoByUserId(userId);
    }

    @Override
    public JsonResult addApplicationAuth(ApplicationAuthForm applicationAuthForm) {
        return null;
    }

    @Override
    public JsonResult updateApplicationAuth(ApplicationAuthForm applicationAuthForm) {
        return null;
    }

    @Override
    public JsonResult<ApplicationAuthVO> getApplicationAuthByAppId(String appId) {
        return null;
    }

    @Override
    public JsonResult<DepartmentVO> getDepartmentVOById(Long departmentId) {
        return null;
    }

    @Override
    public JsonResult<List<DepartmentVO>> getDepartmentList() {
        return userClient.getDepartmentList();
    }

    @Override
    public JsonResult<CompanyInfoVO> getCompanyByName(String companyName) {
        return userClient.getCompanyByName(companyName);
    }

    @Override
    public JsonResult<DepartmentVO> getDepartmentByName(String name, Long thirdPartyDepartmentId, Long companyInfoId) {
        return userClient.getDepartmentByName(name, thirdPartyDepartmentId, companyInfoId);
    }

    @Override
    public JsonResult isOnly(String code, Long id) {
        return userClient.isOnly(code, id);
    }

    @Override
    public JsonResult isOnlyName(String name, Long id, Long companyInfoId) {
        return userClient.isOnlyName(name, id, companyInfoId);
    }

    @Override
    public JsonResult addDepartment(DepartmentForm departmentForm) {
        return userClient.addDepartment(departmentForm);
    }

    @Override
    public JsonResult updateDepartment(DepartmentForm departmentForm) {
        return userClient.updateDepartment(departmentForm);
    }

    @Override
    public JsonResult roleIsOnly(String code, Long id) {
        return userClient.roleIsOnly(code, id);
    }

    @Override
    public JsonResult roleIsOnlyName(String name, Long id, Long companyInfoId, Long departmentId) {
        return userClient.roleIsOnlyName(name, id, companyInfoId, departmentId);
    }

    @Override
    public JsonResult roleAdd(Role role) {
        return userClient.roleAdd(role);
    }

    @Override
    public JsonResult updateRole(Role role) {
        return userClient.updateRole(role);
    }

    @Override
    public JsonResult getTreeData(Long roleId, String companyInfoId) {
        return userClient.getTreeData(roleId,companyInfoId);
    }

    @Override
    public JsonResult isOnlyCompanyName(String name, Long id) {
        return userClient.isOnlyCompanyName(name, id);
    }

    @Override
    public JsonResult addCompany(CompanyInfoForm companyInfoForm) {
        return userClient.addCompany(companyInfoForm);
    }

    @Override
    public JsonResult<Role> getRoleInfoByName(String name, Long departmentId, Long thirdPartyJobtitleId, Long companyInfoId) {
        return userClient.getRoleInfoByName(name, departmentId, thirdPartyJobtitleId, companyInfoId);
    }

    @Override
    public JsonResult userIsOnly(String username, String phone, Long id) {
        return userClient.userIsOnly(username, phone, id);
    }

    @Override
    public JsonResult addUser(User user) {
        return userClient.addUser(user);
    }

    @Override
    public JsonResult updateUser(User user) {
        return userClient.updateUser(user);
    }

    @Override
    public JsonResult<User> getUserByUserName(String username) {
        return userClient.getUserByUserName(username);
    }

    @Override
    public JsonResult<UserVO> getUserInfoByUserName(String username) {
        return userClient.getUserInfoByUserName(username);
    }

    @Override
    public JsonResult passwordEncoder(String password) {
        return userClient.passwordEncoder(password);
    }

    @Override
    public PageResult<User> foreignUserListAll(Integer page, Integer limit, Long departmentId, Long postId, String username, String nickname, String phone) {
        return null;
    }

    @Override
    public JsonResult foreignUserDetail(Long id) {
        return null;
    }

    @Override
    public PageResult<Role> foreignRoleListAll(Integer page, Integer limit, Long departmentId, String roleName) {
        return null;
    }

    @Override
    public JsonResult foreignRoleDetail(Long id) {
        return null;
    }

    @Override
    public PageResult<Department> foreignDepartmentListAll(Integer page, Integer limit, String name) {
        return null;
    }

    @Override
    public JsonResult foreignDepartmentDetail(Long id) {
        return null;
    }

    @Override
    public PageResult<CompanyInfo> foreignCompanyInfoListAll(Integer page, Integer limit, String name) {
        return null;
    }

    @Override
    public JsonResult foreignCompanyInfoDetail(Long id) {
        return null;
    }

    @Override
    public JsonResult<List<Map<String,String>>> getRoleAllMap(){
        return null;
    }

    @Override
    public JsonResult addThirdUser(User user) {
        return null;
    }

    @Override
    public JsonResult updateThirdUser(User user) {
        return null;
    }

    @Override
    public JsonResult delThirdUser(String username) {
        return null;
    }

    @Override
    public JsonResult addOrUpdateDingTalkInfo(SystemDingTalkInfoForm user) {
        return userClient.addOrUpdateDingTalkInfo(user);
    }

    @Override
    public PageResult<SystemDingTalkInfo> getDingTalkInfoList(Integer page, Integer limit) {
        return userClient.getDingTalkInfoList(page,limit);
    }

    @Override
    public JsonResult syncDingUserToSysUer() {
        return userClient.syncDingUserToSysUer();
    }

    @Override
    public JsonResult syncDingDeptToSysRole() {
        return userClient.syncDingDeptToSysRole();
    }

    @Override
    public SystemDingTalkInfo getUserDingConfigInfo() {
        return userClient.getUserDingConfigInfo();
    }

    @Override
    public List<User> selUserDingInfo() {
        return userClient.selUserDingInfo();
    }

    @Override
    public List<User> getByDepartmentId(Long departmentId) {
        return userClient.getByDepartmentId(departmentId);
    }
    
    @Override
    public JsonResult<List<Role>> getAllRole() {
        return null;
    }

    @Override
    public JsonResult<List<Role>> listAllRole(String name) {
        return null;
    }
    
    @Override
    public JsonResult<Role> getRoleById(Long id) {
        return null;
    }

}

